

package com.fitco.asociaciones.composicion;

import java.util.LinkedList;
import java.util.List;

/**
 * Una clase con asociacion de composicion ,la coleccion no debe tener un set y get de la coleccion misma
 * ya que la coleccion es administrada por la misma clase,en este caso la clase Usuario
 * @author Ronald Cuello
 */
public class Usuario {
    private List<Email> correos;

    public Usuario(){
        this.correos=new LinkedList<Email>();
    }

    /**
     * Agrega una nueva cuenta de correo a un usuario
     * @param cuenta nombre de la cuenta para agregar a la lista
     * @return True Si agrega una Cuenta a lista de correos ,False si no se hace
     */
    public boolean agregarEmail(String cuenta){
        //Aqui se encuentra la diferencia entre agregacion y composion
        //El ciclo de vida Email esta atado al objeto Usuario
        //Si se destruye el objeto Usuario ,tambien lo hara el objeto Email
        //NOTA : Para reforzar este concepto,leer sobre referencias en Java
        Email correo=new Email();
        correo.setCuenta(cuenta);

        return this.correos.add(correo);
    }
    /**
     * Remueve una cuenta de la lista de correos
     * @param indice Posicion a eliminar de la lista
     * @return  True Si agrega una Cuenta a lista de correos ,False si no se hace
     */
    public boolean removerEmail(int indice){
        Email emailRemovido=this.correos.remove(indice);

        if(emailRemovido!=null){
            return true;
        }

        return false;
    }
}
